package q82_deleteDuplicates;


import CommonClass.Common.ListNode;

public class Solution {
    public ListNode deleteDuplicates(ListNode head) {
        if (head == null || head.next == null) {
            return head;
        }
        // 设计一个哑节点 其next指向头节点
        ListNode dummy = new ListNode(0, head);
        // 用cur记录当前节点
        ListNode cur = dummy;

        // 这里的条件是当cur的后两个节点不为空时进行判断
        while (cur.next != null && cur.next.next != null) {
            // 如果后两个节点相等 意味着这两个节点以及此后与之相等的节点都需要删除
            if (cur.next.val == cur.next.next.val) {
                // 记录当前的值
                int x = cur.next.val;
                while (cur.next != null && cur.next.val == x) {
                    // 一直删到cur的next不是该值即可
                    cur.next = cur.next.next;
                }
            } else {
                cur = cur.next;
            }
        }

        return dummy.next;
    }

}
